#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <complex>
#include <time.h>
#include <blitz/array.h>
#include <fftw3.h>


using namespace blitz;

void Output2(char* fn1, double t, Array<double,1> r, Array<double,1> v);
void Output3(char* fn2, double t, Array<double,1> ne, Array<double,1> rho, Array<double,1> E);
void Density(Array<double,1> r, Array<double,1>& ne);
void Electric(Array<double,1> phi, Array<double,1>& E);
void Poisson1D(Array<double,1>& u, Array<double,1> v, double kappa);
void rk4_fixed(double& x, Array<double, 1>& y, Array<double,1>& E, void (*rhs_val)(double, Array<double,1>, Array<double,1>,Array<double,1>&), double h);
void rhs_eval(double t, Array<double,1> y, Array<double,1> E, Array<double,1>& dydt);
void Load(Array<double,1> r, Array<double,1> v, Array<double,1>& y);
void UnLoad(Array<double,1> y, Array<double,1>& r, Array<double,1>& v);
double distribution(double vb);

extern double L;
extern int N,J;
